package com.wanjia.estate.pojo.bdc;

import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AccessLevel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 接收外部系统的电子材料数据
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class SetDzcl {

    @Data
    @Schema(name = "DzclRequest")
    public static class Request implements Serializable {
        private Head head;
        private RequestData data;
    }

    @Data
    @Schema(name = "DzclRequestData")
    public static class RequestData implements Serializable {
        /**
         * 业务收件信息
         */
        private List<Ywsj> ywsj;
    }

    /**
     * 业务收件信息
     */
    @Data
    public static class Ywsj implements Serializable {
        /**
         * 受理编号
         */
        private String ycslbh;
        /**
         * 一窗受理收件编号（yc+序列）
         */
        private String ycslsjbh;
        /**
         * 材料类型（原件、复印件）
         */
        private String cllx;
        /**
         * 材料名称（身份证、结婚证）
         */
        private String clmc;
        /**
         * 材料代码
         */
        private String cldm;
        /**
         * 材料份数
         */
        private String clfs;
        /**
         * 材料页数
         */
        private String clys;
        /**
         * 材料确认（1表示已确认）
         */
        private String clqr;
        /**
         * 是否补充收件（1表示补充收件）
         */
        private String sfbcsj;
        /**
         * 是否额外收件（1表示额外收件）
         */
        private String sfewsj;
        /**
         * 材料标记（不动产）（1已标记）
         */
        @JSONField(name = "bj_bdc")
        private String bjBdc;
        /**
         * 材料标记（房产）（1已标记）
         */
        @JSONField(name = "bj_fc")
        private String bjFc;
        /**
         * 材料标记（税务）（1已标记）
         */
        @JSONField(name = "bj_sw")
        private String bjSw;
        /**
         * 是否打印（收件单上显示）（1是、0否）
         */
        private String sfdy;
        /**
         * 材料标记（水电气联动过户）（1水、2电、3气、4有线电视
         */
        @JSONField(name = "bj_ldgh")
        private String bjLdgh;
        /**
         * 备注
         */
        private String note;
        /**
         * 设置人
         */
        private String ausetuser;
        /**
         * 设置日期
         */
        @JSONField(format = "yyyy-MM-dd")
        private Date ausetdate;
        /**
         * 修改日期
         */
        @JSONField(format = "yyyy-MM-dd")
        private Date auchadate;
        /**
         * 电子材料
         */
        private List<Ywdzcl> ywdzcl;

        @JSONField(serialize = false,deserialize = false)
        private String prefix;
    }

    /**
     * 电子材料记录信息
     */
    @Data
    public static class Ywdzcl implements Serializable {
        /**
         * 受理编号
         */
        private String ycslbh;
        /**
         * 一窗受理收件编号（yc+序列）
         */
        private String ycslsjbh;
        /**
         * 电子材料记录编号（yc+序列）
         */
        private String dzcljlbh;
        /**
         * 电子材料名称（身份证、结婚证等）
         */
        private String dzclmc;
        /**
         * 电子材料序号（页码）
         */
        private String dzclxh;
        /**
         * 电子材料排序号（排序用）
         */
        private String dzclpxh;
        /**
         * 文件路径（如文件存磁盘上则记录文件的存储路径）
         */
        private String wjlj;
        /**
         * 是否补充收件（1表示补充收件）
         */
        private String sfbcsj;
        /**
         * 是否额外收件（1表示额外收件）
         */
        private String sfewsj;
        /**
         * 材料审核标记（不动产）（1已标记）
         */
        @JSONField(name = "shbj_bdc")
        private String shbjBdc;
        /**
         * 材料审核标记（房产）（1已标记）
         */
        @JSONField(name = "shbj_fc")
        private String shbjFc;
        /**
         * 材料审核标记（税务）（1已标记）
         */
        @JSONField(name = "shbj_sw")
        private String shbjSw;
        /**
         * 备注
         */
        private String note;
        /**
         * 设置人
         */
        private String ausetuser;
        /**
         * 设置日期
         */
        @JSONField(format = "yyyy-MM-dd")
        private Date ausetdate;
        /**
         * 修改日期
         */
        @JSONField(format = "yyyy-MM-dd")
        private Date auchadate;
        /**
         * 电子材料文件
         */
        private Ywdzclwj ywdzclwj;
    }

    /**
     * 电子材料文件信息
     */
    @Data
    public static class Ywdzclwj implements Serializable {
        /**
         * 受理编号
         */
        private String ycslbh;
        /**
         * 一窗受理收件编号（yc+序列）
         */
        private String ycslsjbh;
        /**
         * 电子材料记录编号（yc+序列）
         */
        private String dzcljlbh;
        /**
         * 电子材料
         * base64编码的图片
         */
        private String dzcl;
        /**
         * 备注
         */
        private String note;
        /**
         * 设置人
         */
        private String ausetuser;
        /**
         * 设置日期
         */
        @JSONField(format = "yyyy-MM-dd")
        private Date ausetdate;
        /**
         * 修改日期
         */
        @JSONField(format = "yyyy-MM-dd")
        private Date auchadate;
    }

    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class Response extends AbstractResponse<String> {

    }
}
